home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is the Mozilla browser.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications, Inc.
- * Portions created by the Initial Developer are Copyright (C) 1999
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Travis Bogard <travis@netscape.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
- #include "nsISupports.idl"
- #include "nsrootidl.idl"
- /*#include "nsIWidget.idl" Boy this would be nice.*/
-
- [ptr] native nsIWidget(nsIWidget);
- %{ C++
- class nsIWidget;
- %}
-
- typedef voidPtr nativeWindow;
-
- /**
- * The nsIBaseWindow describes a generic window and basic operations that
- * can be performed on it. This is not to be a complete windowing interface
- * but rather a common set that nearly all windowed objects support.
- */
-
- [scriptable, uuid(046BC8A0-8015-11d3-AF70-00A024FFC08C)]
- interface nsIBaseWindow : nsISupports
- {
- /*
- Allows a client to initialize an object implementing this interface with
- the usually required window setup information.
-
- @param parentNativeWindow - This allows a system to pass in the parenting
- window as a native reference rather than relying on the calling
- application to have created the parent window as an nsIWidget. This
- value will be ignored (should be nsnull) if an nsIWidget is passed in to
- the parentWidget parameter. One of the two parameters however must be
- passed.
-
- @param parentWidget - This allows a system to pass in the parenting widget.
- This allows some objects to optimize themselves and rely on the view
- system for event flow rather than creating numerous native windows. If
- one of these is not available, nsnull should be passed and a
- valid native window should be passed to the parentNativeWindow parameter.
-
- @param x - This is the x co-ordinate relative to the parent to place the
- window.
-
- @param y - This is the y co-ordinate relative to the parent to place the
- window.
-
- @param cx - This is the width for the window to be.
-
- @param cy - This is the height for the window to be.
-
- @return NS_OK - Window Init succeeded without a problem.
- NS_ERROR_UNEXPECTED - Call was unexpected at this time. Most likely
- due to you calling it after create() has been called.
- NS_ERROR_INVALID_ARG - controls that require either a parentNativeWindow
- or a parentWidget may return invalid arg when they do not
- receive what they are needing.
- */
- [noscript]void initWindow(in nativeWindow parentNativeWindow,
- in nsIWidget parentWidget, in long x, in long y, in long cx, in long cy);
-
- /*
- Tells the window that intialization and setup is complete. When this is
- called the window can actually create itself based on the setup
- information handed to it.
-
- @return NS_OK - Creation was successfull.
- NS_ERROR_UNEXPECTED - This call was unexpected at this time.
- Perhaps create() had already been called or not all
- required initialization had been done.
- */
- void create();
-
- /*
- Tell the window that it should destroy itself. This call should not be
- necessary as it will happen implictly when final release occurs on the
- object. If for some reaons you want the window destroyed prior to release
- due to cycle or ordering issues, then this call provides that ability.
-
- @return NS_OK - Everything destroyed properly.
- NS_ERROR_UNEXPECTED - This call was unexpected at this time.
- Perhaps create() has not been called yet.
- */
- void destroy();
-
- /*
- Sets the current x and y coordinates of the control. This is relative to
- the parent window.
- */
- void setPosition(in long x, in long y);
-
- /*
- Gets the current x and y coordinates of the control. This is relatie to the
- parent window.
- */
- void getPosition(out long x, out long y);
-
- /*
- Sets the width and height of the control.
- */
- void setSize(in long cx, in long cy, in boolean fRepaint);
-
- /*
- Gets the width and height of the control.
- */
- void getSize(out long cx, out long cy);
-
- /*
- Convenience function combining the SetPosition and SetSize into one call.
- Also is more efficient than calling both.
- */
- void setPositionAndSize(in long x, in long y, in long cx, in long cy,
- in boolean fRepaint);
-
- /*
- Convenience function combining the GetPosition and GetSize into one call.
- Also is more efficient than calling both.
- */
- void getPositionAndSize(out long x, out long y, out long cx, out long cy);
-
- /**
- * Tell the window to repaint itself
- * @param aForce - if true, repaint immediately
- * if false, the window may defer repainting as it sees fit.
- */
- void repaint(in boolean force);
-
- /*
- This is the parenting widget for the control. This may be null if only the
- native window was handed in for the parent during initialization. If this
- is returned, it should refer to the same object as parentNativeWindow.
-
- Setting this after Create() has been called may not be supported by some
- implementations.
-
- On controls that don't support widgets, setting this will return a
- NS_ERROR_NOT_IMPLEMENTED error.
- */
- [noscript] attribute nsIWidget parentWidget;
-
- /*
- This is the native window parent of the control.
-
- Setting this after Create() has been called may not be supported by some
- implementations.
-
- On controls that don't support setting nativeWindow parents, setting this
- will return a NS_ERROR_NOT_IMPLEMENTED error.
- */
- attribute nativeWindow parentNativeWindow;
-
- /*
- Attribute controls the visibility of the object behind this interface.
- Setting this attribute to false will hide the control. Setting it to
- true will show it.
- */
- attribute boolean visibility;
-
- /*
- a disabled window should accept no user interaction; it's a dead window,
- like the parent of a modal window.
- */
- attribute boolean enabled;
-
- /** set blurSuppression to true to suppress handling of blur events.
- * set it false to re-enable them. query it to determine whether
- * blur events are suppressed. The implementation should allow
- * for blur events to be suppressed multiple times.
- */
- attribute boolean blurSuppression;
-
- /*
- Allows you to find out what the widget is of a given object. Depending
- on the object, this may return the parent widget in which this object
- lives if it has not had to create its own widget.
- */
- [noscript] readonly attribute nsIWidget mainWidget;
-
- /**
- * Give the window focus.
- */
- void setFocus();
-
- /*
- Title of the window.
- */
- attribute wstring title;
- };
-